The present invention relates to the field of computer graphics, and in particular to methods and apparatus for assigning attribute values to surfaces of computer graphics models. Many computer graphic images are created by mathematically modeling the interaction of light with a three dimensional scene from a given viewpoint. This process, called rendering, generates a two-dimensional image of the scene from the given viewpoint, and is analogous to taking a photograph of a real-world scene. Animated sequences can be created by rendering a sequence of images of a scene as the scene is gradually changed over time. A great deal of effort has been devoted to making realistic looking rendered images and animations.
In computer-generated animation, an object's appearance is defined by a three-dimensional computer model. To appear realistic, the computer model of an object is often extremely complex, having millions of surfaces and tens of thousands of attributes. Due to the complexity involved with animating such complex models, particularly character models with hundreds or thousands of degrees of freedom, animation tools often rely on computer graphics variables and associated computer graphics variable functions to define the attributes of objects. Examples of computer graphics variables include animation variables, shader relationships, weighting relationships, and mappings of influence between computer graphics components. Computer graphics variable functions associate input values to a corresponding output values according to some rule or mathematical expression. Computer graphics variable functions may be functions of an input time variable or any other type of input.
For example, animation variables, which are sometimes referred to as avars, are parameters used by functions to modify the position, or pose, of all or a portion of a model. Animation variables and their associated functions can specify relatively simple motions, such as the translation and rotation of objects. Animation variables and their associated functions are also used to abstract complicated modifications to a model to a relatively simple control. For example, animation variables can specify the rotation angles of the joints of a character model, thereby positioning the character model's limbs and appendages. More complicated animation variables can define the degree of opening of a character's mouth. In this example, the value of a single animation variable is provided to one or more computer graphics variable functions to determine the positions of many different parts of the character model needed to open the characters mouth to the desired degree. In this example, animation software tools then modify the character model according to the outputs of the computer graphics variable functions to produce a character model posed with an open mouth.
Users define computer graphics images and animated sequences by specifying the values of computer graphics variables of an object, and hence the pose of an object, at one or more key frames. A pair of a computer graphics variable value and its associated input value, such as a time value, is referred to as a knot. A set of one or more knots at a given input value defined by a user or another application, such as an inverse kinematic system, is referred to as an authored pose of an object.
Based on the authored poses of one or more objects, an animation system determines the poses of object for frames, time values, or any other type of input values where authored poses are not defined. Typically, animation systems interpolate the values of its computer graphics variables from the knots of authored knots. A variety of different interpolation schemes are used in animation, including linear, cubic, b-spline, Bezier, and Catmull-Rom. Typically, animation tools will display a line or curve, such as a spline curve, defined by one or more knots of a computer graphics variable and the interpolation scheme.
Precise control of the timing, rhythm, values, and interpolation of computer graphics variable knots is essential to achieving artistically effective animation. Subtle adjustments in the value, timing, and interpolation of knots can greatly change the artistic impact of animation. During animation, many gestures or actions are comprised of large numbers of knots from one or more computer graphics variables acting in concert to achieve the desired motion. For example, a sequence of knots of a single computer graphics variable might define how a character's mouth opens during a sequence of dialog. In another example, a sequence of knots for multiple computer graphics variables might define a character's arm and hand movements while waving or pointing.
Because animation is often defined by large numbers of related computer graphics variable knots, it is often difficult for users to identify the visual and aesthetic contribution of specific computer graphics variable knots to complicated animations. In particular, the timing and rhythm of specific computer graphics variable knots are difficult to discern within complicated animations.